import app from './app.js';
import logger from './config/logger.js';
import { createServer } from 'http';

// 设置端口
const PORT = process.env.PORT || 7000;

// 创建HTTP服务器
const server = createServer(app);

// 处理未捕获的异常
process.on('uncaughtException', (err) => {
  logger.error('未捕获的异常:', err);
  // 如果服务器正在运行，则优雅地关闭
  if (server) {
    server.close(() => {
      process.exit(1);
    });
  } else {
    process.exit(1);
  }
});

// 启动服务器
server.listen(PORT, () => {
  logger.info(`服务器运行在 ${process.env.NODE_ENV} 模式，端口 ${PORT}`);
});

// 处理未处理的Promise拒绝
process.on('unhandledRejection', (err) => {
  logger.error('未处理的Promise拒绝:', err);
  // 关闭服务器并退出进程
  server.close(() => {
    process.exit(1);
  });
});

// SIGTERM信号处理（用于Docker等）
process.on('SIGTERM', () => {
  logger.info('SIGTERM 收到，关闭服务器');
  server.close(() => {
    logger.info('服务器已关闭');
  });
});

export default server;
